package cn.sc.summer.sms.util;

import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.spring.SpringUtil;
import cn.sc.summer.sms.properties.SmsProperties;
import cn.sc.summer.sms.service.SmsService;
import cn.sc.summer.sms.enums.SmsServerEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.lang.NonNull;
import org.springframework.stereotype.Component;

import java.util.Arrays;
import java.util.Optional;

/**
 * 类名：短信下发工具类
 *
 * @author a-xin
 * @date 2023/10/17 15:21
 */
@Slf4j
@Component
public class SmsUtil {

    /**
     * 根据模版发送短信
     *
     * @param phone      下发手机号
     * @param templateId 模板ID
     * @param params     下发参数
     */
    public static void sendSmsMessage(@NonNull String phone, @NonNull String templateId, @NonNull String... params) {
        SmsProperties smsProperties = SpringUtil.getBean("smsProperties");
        if (StrUtil.isNotBlank(smsProperties.getEnabled())) {
            SmsServerEnum serviceEnum = Optional.ofNullable(SmsServerEnum.getByInfo(smsProperties.getEnabled()))
                    .orElseThrow(() -> new RuntimeException("不支持的短信下发平台"));
            //SmsService smsService = SpringUtil.getBean(serviceEnum.getClazz().getName());
            SmsService smsService =(SmsService) SpringUtil.getBean(serviceEnum.getClazz());
            smsService.sendSms(Arrays.asList(params), smsProperties.getParams(), templateId, phone);
        } else {
            throw new RuntimeException("请配置需要使用的短信下发平台！");
        }
    }

}
